﻿using System;
using LuckyLoot.Domain.Entities;
using LuckyLoot.Domain.Entities.People;
using System.Collections.Generic;
using LuckyLoot.Domain.Aggregate;

namespace LuckyLoot.ServiceFacade.Contracts
{
    public interface IApointmentService
    {
        
        Apointment UpdateApointment(int apointmentID, string title, string description, int customerID, int artistID, DateTime date, DateTime? returnDate);
        TattooApointment UpdateTattooApointment(int tattooID, string title, string description, int customerID, int artistID, DateTime date, TattooSize size, TattooStyle style, TattooColors colors);

        Apointment ScheduleVisit(string title, string description, int customerID, int artistID, DateTime date, DateTime? returnDate);
        TattooApointment ScheduleTattoo(string title, string description, int customerID, int artistID, DateTime date, TattooSize size, TattooStyle style, TattooColors colors);
        TattooApointment ConvertVisitToTattoo(int apointmentID);
        TattooApointment ScheduleTattooSession(int tattooApointmentID, DateTime date);
        decimal CalculateAverageTattooPrice(int tattooApointmentID);
        decimal CalculateAverageTattooPrice(TattooColors tattooColors, TattooSize tattooSize, int tattooSessions);

        void UploadPicture(int apointmentID, byte[] picture);
        void UploadPictures(int apointmentID, List<byte[]> pictures);
        void DeleteAllPictures(Apointment appointment);
        void DeletePicture(Apointment apointment, Picture picture);
        void DeletePicture(Apointment appointment, int photoId);

        Apointment GetApointment(int apointmentID);
        TattooApointment GetTattooApointment(int tattooApointmentID);

        List<Picture> GetApointmentPictures(int apointmentID);

        List<Apointment> GetAllApointments();
        List<TattooApointment> GetAllTattooApointments();
    }

}
